Skip to main content

排查触发器请求或响应有效负载大小问题

在 Zap 编辑器中测试触发器

约束

当用户在 Zap 编辑器中点击 Test Trigger 时,输入有效负载必须小于 6MB。

如果违反约束,用户将看到的错误

  • "Invoke payload too large"

最佳实践

Zap 编辑器每次仅处理三个新记录作为样本数据,因此,确保有效负载大小低于限制的一种方法是限制返回的结果为三个记录。

要判断请求是否是为样本数据,可以使用 bundle meta 参数 bundle.meta.isLoadingSample。当该参数设置为 true 时,表示用户正在 Zap 编辑器中进行测试,此时您的集成可以返回受限的有效负载。更多关于 bundle.meta 属性的信息,请参阅此处

启用 Zap

约束

当用户将带有轮询触发器的 Zap 切换为“On”时,Zapier 会执行一些额外的初始化操作,这些操作必须在 30 秒内完成。

首先,它会测试用户对您服务的身份验证。

然后,它会使用触发器的 perform 方法构建一个去重表,以确保 Zap 不会为现有记录运行。该请求返回的有效负载也必须小于 20 MB。

如果违反约束,用户将看到的错误

  • 用户会收到一封包含错误消息的电子邮件,消息中包括文字 "Your Zap could not be turned on"

最佳实践

这里有一个 bundle.meta 属性可以利用,即 bundle.meta.isPopulatingDedupe。当该属性设置为 true 时,表示 Zap 正在被启用,您可以使用它来创建不同的请求。去重过程仅使用每个记录的 id 属性,因此,一个可考虑的选项是为此请求筛选返回的字段,以减少记录大小。

更多关于 bundle.meta 属性的信息,请参阅此处

对于那些可能超过超时或大小限制的请求,您可以确保筛选后的请求成功执行。或者,如果您的筛选请求在时间和大小方面有足够的余量,您可以利用这一点,在 perform 方法中加载比平时更多的记录到 Zap 的去重表中。这对于可能在后续轮询请求中返回意外旧记录的 API 特别相关。

示例: Salesforce 集成有一个 Updated Field on Record 触发器,它可能会针对用户可能不认为相关的旧记录进行触发。为了缓解这个问题,该集成在 Zap 启动期间使用筛选请求将多达 104,000 条记录下载到去重表中。

触发器在 Zap 中运行

约束

每次 Zap 执行时,触发器的响应有效负载必须小于 20MB(针对轮询触发器)或小于 10MB(针对 REST Hook 触发器)。

如果违反约束,用户将看到的错误

  • 用户会收到一封包含错误消息的电子邮件,通常消息中包含 "Trigger Partner Failure"

  • 错误消息中还可能包含 "Response payload size exceeded maximum allowed payload size"

最佳实践

  • 对于轮询触发器,如果您的 API 端点支持根据记录数量或日期时间进行请求筛选,请使用这些功能来减少返回的记录数量。

  • 如果筛选不可用,请考虑使用 API 上最简单的端点来获取基本记录数据,然后使用 Zapier 平台的脱水功能请求补充数据。脱水指针会为每个后续请求创建,并且仅在 Zap 的后续步骤需要水化属性时才会解析。

  • 对于 REST Hook 触发器,如果您的 REST Hook 订阅端点支持筛选,则一个选项是在触发器中提供输入字段,让用户决定要返回的记录数据。

  • 考虑发送一个包含最小记录数据的通知 REST Hook。然后,使用额外的 API 端点和 Zapier 平台的脱水功能请求补充记录数据。脱水指针会为每个后续请求创建,并且仅在 Zap 的后续步骤需要水化属性时才会解析。


需要帮助?告诉我们您的问题,我们会将您连接到合适的资源或联系支持团队。